package pw_coding

import (
	"bytes"
	"html/template"
	"path"
	"sasuke/utils"
)

// 生成器接口
type Gener interface {
	Language() string
	Suffix() string
	TplCode() string
	DataTypeMap(datatype string, cannull bool) string
	Coding(p *CmdParam)
}

func Gen(e Langer) {
	eTplName, eTpl := e.GetTemplate()
	tpl, err := template.New(eTplName).Parse(eTpl)
	if err != nil {
		panic(err)
	}
	content := bytes.NewBuffer([]byte{})
	err = tpl.Execute(content, e)
	if err != nil {
		panic(err)
	}
	// 构建文件全路径
	filename := path.Join(e.GetWorkDir(), e.GetFileName())
	// 输出文件
	utils.Write2File(filename, content.String())
}
